Many uses of flash memory devices emphasize the read capability of flash memory devices over the write capability of flash memory devices due to endurance limitations of the floating gate technology. However, some applications require a method to dump data to non-volatile storage devices as quickly as possible (e.g., during a power failure). However, given the rare nature of power fail events, use of flash memory devices is a suitable non-volatile medium. Unfortunately, current flash-based drives are limited in their write performance because they do not take full advantage of the concurrent programming (i.e., writing) capabilities of the flash memory devices.
Currently, flash wear-leveling (WL) algorithms manage the wear-leveling at the block level since that is the erase granularity of the flash memory devices. Typically, device blocks that fail to erase are marked bad and are never used again (through the use of a Bad Block Management (BBM) algorithm. Further, blocks that have been erased too often are avoided for use until other blocks have near the same erase count. Over time, the normal use of a flash memory device uses up all programmable media so a “garbage collection” (GC) process is needed to free-up under utilized blocks having pages that have been invalidated by the need to over-write old data. Unfortunately, the sequential writing of blocks gets fragmented due to bad blocks, WL and GC methods.